Как часто вам приходится проверять идеи и гипотезы в ваших проектах? Сколько времени и ресурсов вы тратите на это? Как много гипотез вы проверяете? Как много из них вы отмечаете как неуспешные?
Эти и многие другие вопросы мы задаем себе и своим клиентам, и как правило ответы на эти вопросы нам не очень нравятся. Гипотезы тестируются не так часто и не в том объеме как хотелось бы, ведь чем больше идей будет проверено тем более оптимальное и эффективное решение будет выбрано. Иногда на проверку идеи тратятся огромные ресурсы, и самый ценный из них - время.
Ускорить в разы получение результатов от проверки гипотез, быстро попробовать новые технологии и многое другое решает JHipster - генератор современных проектов.
Наш директор по инновациям Жюльен Дюбуа является создателем и основным участником проекта JHipster Open Source.
Перейдем к примеру
Допустим, поступило предложение от вашего HR отдела проверить гипотезу, которая ускорила бы процесс регистрации кандидата, найденного на сайте hh.ru. Идея в том, чтобы исключить ручной ввод информации о кандидате. Необходимо получить все данные о кандидате с открытой карточки на сайте hh.ru.
Мы создадим простое web-приложение, с двумя основными экранами:
- Форма ввода URL резюме кандидата с сайта hh.ru
- Список зарегистрированных кандидатов
Расчетная длительность проекта - 3 часа.
Далее пример проекта будет демонстрироваться на компьютере под управлением macOs.
Установите необходимые программы и инструменты
- Установите JHipster (https://www.jhipster.tech/installation/)
- Установите Java from Oracle
- Устновите Git from https://git-scm.com
- Устновите Node.js from http://nodejs.org
- Устновите Yarn using the Yarn installation instructions
- Выполните команды для установки Yeoman и генератора JHipster
yarn global add yo
yarn global add generator-jhipster
Генерируем проект
mkdir -p jhipster-hh-example/candidate
jhipster
- Application type: Monolithic
- Base name of the application: candidate
- Default Java package name: org.jhipster.hh.candidate
- Do you want to use the JHipster Registry to configure, monitor and scale your application?: No
- Type of authentication: JWT
- Type of database: SQL
- Production database: PostgreSQL
- Development database: H2 with disk-based persistence
- Do you want to use the Spring cache abstraction? Ehcache
- Hibernate 2nd level cache: Yes
- Maven or Gradle: Maven
- Other technologies: None
- Client framework: Angular
- Sass for CSS: Yes
- Internationalization support: Yes
- Native language: English
- Additional languages: Russian
- Testing frameworks: Gatling, Protractor
- Install other generators from the JHipster Marketplace: No
Запустите Spring Boot приложение:
./mvnw
Запустите свой Webpack сервер разработки:
npm start
Добавляем сущность
jhipster entity candidate
- Do you want to add a field to your entity? Yes
- What is the name of your field? url
- What is the type of your field? String
- Do you want to add validation rules to your field? Yes
- Which validation rules do you want to add? Required
- Do you want to add a field to your entity? Yes
- What is the name of your field? email
- What is the type of your field? String
- Do you want to add validation rules to your field? Yes
- Which validation rules do you want to add? Required
- Do you want to add a field to your entity? Yes
- What is the name of your field? name
- What is the type of your field? String
- Do you want to add validation rules to your field? Yes
- Which validation rules do you want to add? Required
- Do you want to add a field to your entity? No
- Do you want to use separate service class for your business logic? Yes, generate a separate service interface and implementation
- Do you want to use a Data Transfer Object (DTO)? Yes, generate a DTO with MapStruct
- Do you want to add filtering? Not needed
- Do you want pagination on your entity? Yes, with pagination links
- Overwrite src/main/resources/config/liquibase/master.xml? (ynaxdH) a
Проверим ручную регистрацию кандидатов.
Добавляем логику
Добавляем кнопку разбора резюме на сайте hh.ru в готовую форму создания/редактирования кандидата.
Откройте проект в любом редакторе исходного кода или в среде разработки. Найдите файл candidate-update.component.html, внесите изменения для поля url:
Найдите файл candidate-update.component.ts, добавьте методы parseResume, subscribeToParseResumeResponse, onParseResumeSuccess, onParseResumeError:
Найдите файл candidate.service.ts, добавьте метод parseResume:
Создаем метод контроллера для разбора резюме на сайте hh.ru
Создайте новый класс REST контроллера HHResource.java
Найдите файл CandidateService.java, добавьте метод parseResume
Найдите класс CandidateServiceImp.java, добавьте реализацию метода parseResume
Тестируем
Запустите Spring Boot приложение:./mvnw
Воспользуемся публичным резюме по адресу https://hh.ru/resume/36f93f51ff032cfbc70039ed1f694132507667
Скопируйте URL в форму ввода нового кандидата и нажмите кнопку "Разобрать резюме"
Вывод
JHipster - это мощный инструмент генерации проектов и не только для проверки гипотез и тестирования, вы можете использовать JHipster для создания промышленных решений. Более подробно познакомиться с возможностями JHipster можно здесь https://www.jhipster.tech/
Исходные коды проекта доступны для скачивания https://github.com/nemyatov/hh-candidate
Немятов, 2019